iT邦幫忙

2024 iThome 鐵人賽

DAY 7
0
Python

眾裏尋它:Python表格利器Great Tables系列 第 7

[Day07] - 添加表格階層、分類及分類標題

  • 分享至 

  • xImage
  •  

今天我們來介紹如何在表格中:

  • 加入階層(GT.tab_spanner())。
  • 加入分類(GT.tab_stub()
  • 加入分類標題(GT.tab_stubhead())。

以下將繼續使用df_demo為範例說明:
df_demo

GT.tab_spanner()

GT.tab_spanner(self, label, columns=None, spanners=None, level=None, id=None, gather=True, replace=False)

GT.tab_spanner()可以讓使用者針對選取的欄位建立階層。例如:

(GT(df_demo).tab_spanner(label="floats", columns=["float1", "float2"]))

spanner

我們可以透過多次呼叫GT.tab_spanner()建立多個階層。例如:

(
    GT(df_demo)
    .tab_spanner(label="ints", columns=["int"])
    .tab_spanner(label="floats", columns=["float1", "float2"])
)

multi calls for spanner

此外,也可以建立多層次的階層。例如:

(
    GT(df_demo)
    .tab_spanner(label="ints", columns=["int"])
    .tab_spanner(label="floats", columns=["float1", "float2"])
    .tab_spanner(label="numbers", columns=["int", "float1", "float2"])
)

multi levels for spanner

有趣的是,使用者可以透過level參數來控制其所處的階層位置。例如:

(
    GT(df_demo)
    .tab_spanner(label="ints", columns=["int"])
    .tab_spanner(label="floats", columns=["float1", "float2"])
    .tab_spanner(
        label="numbers", columns=["int", "float1", "float2"], level=0
    )
)

spanner level

如果不指定level的話,gt會自動判斷各階層最合理的位置。而level=0則代表將該階層指定為最靠近欄位名稱的一層。

最後,別忘了在gt中選擇欄位的方法十分多元。下面這個範例使用了索引值、Polars expression及混用欄位名稱與Polars expression等三種選取方式:

float_cols = cs.starts_with("float")
(
    GT(df_demo)
    .tab_spanner(label="ints", columns=0)
    .tab_spanner(label="floats", columns=float_cols)
    .tab_spanner(label="numbers", columns=["int", float_cols])
)

several ways to select columns for spanner

GT.tab_stub()

GT.tab_stub(self, rowname_col=None, groupname_col=None)

GT.tab_stub()可以讓使用者針對所選取的一個或兩個欄位名進行分類。

如果只有選取一個欄位,其必須指定為rowname_col。例如:

(GT(df_demo).tab_stub(rowname_col="int"))

rowname_col only for stub

如果只有選取一個欄位,卻指定為groupname_col時,會出現下面這個gt無法判斷的情況:

(GT(df_demo).tab_stub(groupname_col="group"))

groupname_col only for stub

如果選取兩個欄位,分別作為rowname_colgroupname_col,則可呈現分類的效果:

(GT(df_demo).tab_stub(groupname_col="group", rowname_col="int"))

stub new style

由於GT.tab_stub()是比較新的功能,在一些legacy code中,您可能會見到下面這種用法:

GT(df_demo, groupname_col="group", rowname_col="int")

stub old style

雖然這樣的使用方法仍被接受,但卻比較沒有彈性。因為這麼一來,groupname_colrowname_col需要於生成GT時決定,而不是透過GT.tab_stub()這樣的fluent API添加上去。

GT.tab_stubhead()

GT.tab_stubhead(self, label)

GT.tab_stubhead()可以指定Stub head呈現的內容。例如:

(GT(df_demo).tab_stub(rowname_col="int").tab_stubhead("Stubhead"))

stubhead

Code

本日程式碼傳送門


上一篇
[Day06] - 添加表格標題、來源及註腳
下一篇
[Day08] - 調整表格顏色、字型及線條
系列文
眾裏尋它:Python表格利器Great Tables30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言